#coding: utf-8
import time
import sched
import datetime

from db import *
from higroup import *
#sched是python的定时任务模块


schedule = sched.scheduler(time.time, time.sleep)
#从数据库获取第一个任务
newschedule = findScheduleByNewTime()

#返回距下次任务还有多少秒
def getSeconds():
    #申明全局变量
    global newschedule
    newschedule = findScheduleByNewTime()
    if newschedule:
        return (newschedule['worktime'] - datetime.datetime.now()).total_seconds()
    else:
        print("所有任务执行完毕，退出程序……")
        exit()

#发消息函数
def SendTo():
    global newschedule
    #sendToNickname(newschedule['name'],newschedule['content'])
    sendMsgToQqGroup(newschedule['name'],newschedule['content'])

#中间函数，用于循环运行所有数据库未执行事件
def perform():
    SendTo()
    #睡眠5秒，不然可能会重复发送消息
    time.sleep(5)
    sleepSecond = getSeconds()
    print("下次任务执行时间："+str(newschedule['worktime']))
    #这次任务执行完后添加新任务
    schedule.enter(sleepSecond,1,perform,())


def run():
    #1.获取数据库最近将执行任务的时间及姓名
    #2.计算执行任务的时间与现在时间的差值（单位：秒）
    sleepSecond = getSeconds()
    print("下次通知："+str(newschedule['worktime']))
    #3.加入定时处理函数
    schedule.enter(sleepSecond,1,perform,())
    #4.执行定时任务
    schedule.run()

if __name__ == '__main__':
    run()
